Angular CLI Workspaces একটি কনসেপ্ট যা একাধিক Angular অ্যাপ্লিকেশন এবং লাইব্রেরি একটি একক প্রজেক্টে পরিচালনা করার সুযোগ দেয়। এটি বিশেষভাবে Monorepo আর্কিটেকচারে সহায়ক, যেখানে একাধিক অ্যাপ্লিকেশন বা লাইব্রেরি একসাথে পরিচালিত হয় এবং তাদের মধ্যে পুনঃব্যবহারযোগ্য কোড শেয়ার করা যায়। Angular CLI Workspaces মূলত multiple apps বা libraries তৈরি এবং পরিচালনা করার জন্য ব্যবহৃত হয়।
Workspaces তৈরি করা
Angular CLI দিয়ে একটি নতুন Workspace তৈরি করতে হলে, প্রথমে ng new কমান্ডটি ব্যবহার করতে হবে, তবে এখানে --create-application অপশনটি ব্যবহার করা যাবে না। কারণ Workspaces তৈরি করার সময় আপনি নির্ধারণ করতে পারবেন যে আপনার প্রজেক্টে একটি অ্যাপ্লিকেশন থাকবে কি না।
Workspace তৈরি করার কমান্ড:
ng new my-workspace --create-application=false
এটি একটি নতুন Angular Workspace তৈরি করবে, যেখানে আপনি ভবিষ্যতে একাধিক অ্যাপ্লিকেশন এবং লাইব্রেরি যোগ করতে পারবেন।
Workspace structure:
এটি নিম্নলিখিত ফোল্ডার স্ট্রাকচার তৈরি করবে:
my-workspace/
├── projects/
├── angular.json
├── package.json
├── tsconfig.json
├── tslint.json
- projects/: এখানে আপনি আপনার অ্যাপ্লিকেশন এবং লাইব্রেরি গুলি রাখবেন।
- angular.json: পুরো Workspace এবং এর কনফিগারেশন সম্পর্কিত ফাইল।
- package.json: প্রজেক্টের সমস্ত ডিপেনডেন্সি এবং স্ক্রিপ্ট সম্পর্কিত তথ্য।
Multiple Apps and Libraries in a Workspace
একটি Angular Workspace তে একাধিক অ্যাপ্লিকেশন এবং লাইব্রেরি রাখা যেতে পারে। অ্যাপ্লিকেশন এবং লাইব্রেরি অ্যাড করতে, Angular CLI এর ng generate বা ng g কমান্ড ব্যবহার করতে হয়।
নতুন অ্যাপ্লিকেশন তৈরি করা:
আপনি Workspace এ নতুন অ্যাপ্লিকেশন তৈরি করতে পারেন:
ng generate application app-name
অথবা:
ng g app app-name
এটি একটি নতুন Angular অ্যাপ্লিকেশন তৈরি করবে যা projects/ ফোল্ডারে রাখা হবে।
নতুন লাইব্রেরি তৈরি করা:
Workspace এ নতুন লাইব্রেরি তৈরি করতে:
ng generate library library-name
অথবা:
ng g lib library-name
এটি একটি লাইব্রেরি তৈরি করবে যা অন্যান্য অ্যাপ্লিকেশনে রিইউজ করা যাবে।
Workspace এ কাজ করা
Workspace এ একাধিক অ্যাপ্লিকেশন এবং লাইব্রেরি তৈরি করা হলে, Angular CLI এর মাধ্যমে প্রতিটি অ্যাপ্লিকেশন বা লাইব্রেরি আলাদাভাবে বিল্ড, সার্ভ, টেস্ট করা সম্ভব। উদাহরণস্বরূপ:
অ্যাপ্লিকেশন বিল্ড করা:
ng build app-name
লাইব্রেরি বিল্ড করা:
ng build library-name
অ্যাপ্লিকেশন সার্ভ করা:
ng serve app-name
লাইব্রেরি টেস্ট করা:
ng test library-name
এইভাবে, আপনি একটি Workspace এর মধ্যে বিভিন্ন অ্যাপ্লিকেশন এবং লাইব্রেরির উপর কাজ করতে পারবেন এবং তাদের নির্দিষ্ট প্রক্রিয়াগুলি পরিচালনা করতে পারবেন।
Workspace কনফিগারেশন
Angular CLI Workspace কনফিগারেশনটি মূলত angular.json ফাইলে থাকে। এই ফাইলটি Workspace-এর সমস্ত অ্যাপ্লিকেশন, লাইব্রেরি এবং তাদের কনফিগারেশন সংক্রান্ত তথ্য ধারণ করে। এখানে আপনি অ্যাপ্লিকেশন এবং লাইব্রেরির জন্য বিভিন্ন সেটিংস যেমন বিল্ড কনফিগারেশন, সার্ভিং পোর্ট, টেস্ট কনফিগারেশন ইত্যাদি দেখতে পাবেন।
উদাহরণ: angular.json ফাইল
{
"projects": {
"app-name": {
"projectType": "application",
"root": "projects/app-name",
"sourceRoot": "projects/app-name/src",
"architect": {
"build": {
"builder": "@angular-devkit/build-angular:browser",
"options": {
"outputPath": "dist/app-name",
"index": "projects/app-name/src/index.html",
"main": "projects/app-name/src/main.ts",
"polyfills": "projects/app-name/src/polyfills.ts",
"tsConfig": "projects/app-name/tsconfig.app.json",
"assets": [
"projects/app-name/src/favicon.ico",
"projects/app-name/src/assets"
]
}
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
"options": {
"browserTarget": "app-name:build"
}
}
}
}
}
}
এখানে, app-name অ্যাপ্লিকেশনের জন্য কনফিগারেশন রয়েছে, যেখানে তার বিল্ড এবং সার্ভ অপশন উল্লেখ করা হয়েছে।
Angular Workspace এর সুবিধা
- Monorepo আর্কিটেকচার: একাধিক অ্যাপ্লিকেশন এবং লাইব্রেরি একটি একক রিপোজিটরিতে থাকতে পারে, যা কোড শেয়ারিং এবং ডিপেনডেন্সি ম্যানেজমেন্টকে সহজ করে তোলে।
- কোড পুনঃব্যবহারযোগ্যতা: লাইব্রেরি তৈরি করে একাধিক অ্যাপ্লিকেশনে কোড পুনঃব্যবহার করা সম্ভব।
- স্বয়ংক্রিয় বিল্ড ও সার্ভ: Angular CLI দিয়ে বিভিন্ন অ্যাপ্লিকেশন এবং লাইব্রেরির বিল্ড, সার্ভ এবং টেস্টিং প্রক্রিয়া সহজ হয়ে যায়।
- স্কেলেবল প্রজেক্ট ম্যানেজমেন্ট: বড় প্রকল্পের জন্য Angular CLI Workspaces খুবই উপকারী, কারণ এটি উন্নত স্কেলেবল প্রজেক্ট ম্যানেজমেন্ট সরবরাহ করে।
উপসংহার
Angular CLI Workspaces বড় Angular প্রজেক্টে একাধিক অ্যাপ্লিকেশন এবং লাইব্রেরি পরিচালনার জন্য খুবই কার্যকরী। এটি Monorepo আর্কিটেকচারের সুবিধা প্রদান করে, যেখানে বিভিন্ন অ্যাপ্লিকেশন এবং লাইব্রেরি একত্রে কাজ করতে পারে, কোড শেয়ারিং এবং রিইউজকে সহজ করে তোলে। Angular CLI Workspaces ডেভেলপারদের জন্য প্রজেক্ট ম্যানেজমেন্ট এবং স্কেলিং প্রক্রিয়া আরও সহজ করে দেয়।
Read more